1 /**
2 * Copyright 2008 WebPhotos
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package net.sf.webphotos.action;
17
18 import java.awt.event.ItemEvent;
19 import java.awt.event.ItemListener;
20 import javax.swing.JTable;
21 import net.sf.webphotos.Album;
22 import net.sf.webphotos.PhotoDTO;
23 import net.sf.webphotos.gui.PainelWebFotos;
24 import net.sf.webphotos.gui.util.TableModelFoto;
25
26 /**
27 * Informa se o item foi ou não selecionado. Possui dois construtores, um geral
28 * que seta um valor para a tabela de fotos e o segundo que não recebe
29 * parâmetros, serve apenas para mudar o flag de alteração detectada. Possui um
30 * método que identifica o elemento selecionado e faz as alterações necessárias.
31 */
32 public class AcaoItemListener implements ItemListener {
33
34 private JTable tbFotos = null;
35
36 /**
37 * Construtor da classe. Recebe uma tabela como parâmetro e seta esse valor
38 * para a variável tabela de fotos da classe.
39 *
40 * @param tabela Tabela de fotos.
41 */
42 public AcaoItemListener(JTable tabela) {
43 tbFotos = tabela;
44 }
45
46 /**
47 * Construtor da classe. Inicialmente vazio. Utilizado pelo combo
48 * lstCategoriasAlbum em
49 * {@link net.sf.webphotos.gui.PainelWebFotos PainelWebFotos}, muda somente
50 * o flag
51 * {@link net.sf.webphotos.gui.PainelWebFotos#alteracaoDetectada() alteracaoDetectada}.
52 */
53 public AcaoItemListener() {
54 }
55
56 /**
57 * Checa quando for evento de lstCategoriasAlbum, significa que o album esta
58 * vazio, muda somente a flag de alteração detectada. Caso contrário busca
59 * qual item, no caso foto, foi selecionado pelo usuário, seta creditoNome
60 * com o item afetado pelo evento, atualiza o modelo do albúm e muda o flag
61 * de alteração detectada.
62 *
63 * @param e Evento de item (selecionado ou não selecionado).
64 */
65 @Override
66 public void itemStateChanged(ItemEvent e) {
67 PhotoDTO f;
68 // quando for evento de lstCategoriasAlbum, somente muda a flag
69 if (tbFotos == null) {
70 PainelWebFotos.alteracaoDetectada();
71 //return;
72 } else if (e.getStateChange() == ItemEvent.SELECTED) {
73 if (e.getItem().toString().length() > 0) {
74 Object fotoID = tbFotos.getModel().getValueAt(tbFotos.getSelectedRow(), 0);
75 try {
76 f = (PhotoDTO) Album.getAlbum().getFoto(Integer.parseInt(fotoID.toString()));
77 } catch (Exception ex) {
78 f = (PhotoDTO) Album.getAlbum().getFoto((String) fotoID);
79 }
80 f.setCreditoNome((String) e.getItem().toString());
81 TableModelFoto.getModel().update();
82 TableModelFoto.getModel().fireTableCellUpdated(tbFotos.getSelectedRow(), 2);
83 PainelWebFotos.alteracaoDetectada();
84 }
85 }
86 }
87 }